<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head>
  <title>Cling Download</title>
  <meta name="description" content="Official Website of Cling" />
  <meta name="keywords" content="download cling, svn, make, build" />
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="style/style.css" />
  <link rel="stylesheet" type="text/css" href="style/menu.css" />
</head>

<body>
  <div id="website">
    <div id="header">
      <div id="logo">
        <div id="logo_text">
          <!-- class="logo_colour", allows you to change the colour of the text -->
          <h1><a href="../index.html"><span class="logo_colour">Cling</span> Website</a></h1>
          <h2>Interactive Compiler Interface</h2>
        </div>
      </div>
      <div id="mainmenubar">
        <ul id="mainmenu">
          <!-- put class="selected" in the li tag for the selected page - to highlight which page you're on -->
          <li><a class="tab_link" href="index.html">Home</a></li>
          <li class="selected"><a class="tab_link" href="download.html">Download</a></li>
          <li><a class="tab_link" href="news.html">News</a></li>
          <li class="root"><a class="tab_link" href="docs.html">Docs</a>
            <div id="secondarymenu">
              <div id="secondarymenu_content">
                <div class="secondarymenu_header">Documentation</div>
                <br class="clear" />
                <div class="column">
                  <div class="column_header">Developer</div>
                  <ul>
                    <li><a class="secm_link" href="docs/internal/doxygen.html">Doxygen</a></li>
                    <li><a class="secm_link" href="docs/internal/extensions.html">Extensions</a></li>
                    <li><a class="secm_link" href="#">Error Recovery</a></li>
                    <li><a class="secm_link" href="#">Late Binding</a></li>
                  </ul>
                </div>
                <div class="column">
                  <div class="column_header">End User</div>
                  <ul>
                    <li><a class="secm_link" href="#">User Manual</a></li>
                    <li><a class="secm_link" href="#">Status of ObjectiveC[++]</a></li>
                  </ul>
                </div>

              </div>
            </div>
          </li>
          <li><a class="tab_link" href="contact.html">Get Involved</a></li>
        </ul>
      </div>
    </div>
    <div id="breadcrumb"></div>
    <div id="content">
      <div class="sidebar">
        <!-- insert your sidebar items here -->
        <h3>Latest News</h3>
        <h4>Cling goes public</h4>
        <h5>July 25th, 2011</h5>
        <p> Cling was officially announced to the Clang community <br /><a href="news/ClingAnnouncement.html">Read more</a></p>
        <p></p>
        <h4>New website launched</h4>
        <h5>July 1st, 2011</h5>
        <p> Welcome to the new website of the project. <br /><a href="news/NewWebsiteLaunched.html">Read more</a></p>
        <h3>Useful Links</h3>
        <ul>
          <li><a href="www.cern.ch" target="_blank">CERN</a></li>
        </ul>
      </div>
      <div id="main">
        <!-- insert the page content here -->
        <h1>Download & Build Instructions</h1>
        <p>This page is shows how to download and build the project cling as a standalone C++ interpreter in few steps</p>
        <div class="info"> If you want to download and build cling within ROOT please follow the tutorial <a href="https://root.cern/cling/cling_build_instructions/" target="_blank">here</a></div>
        <h2>Build</h2>
        <h3>Unix systems</h3>
        <ul><b><i>Prerequisites</i></b>
          <li>See <a href="http://llvm.org/docs/GettingStarted.html#requirements" target="_blank">Getting Started with the LLVM System - Requirements</a>
          </li>
          <li>
            Note also that Python is needed for running the test suite. Get it at: http://www.python.org/download
          </li>
        </ul>

        <ol>
          <li>
            Checkout LLVM:
            <pre>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm/src</pre>
          </li>
          <li>
            Checkout Clang:
            <pre>cd llvm/src/tools/
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang</pre>
          </li>
          <li>
            Checkout Cling (next to clang):
            <pre>svn co http://root.cern.ch/svn/root/branches/dev/cling cling</pre>
          </li>
          <li>
            Allow Cling to hook into LLVM's build system:
            <pre>cat tools/cling/patches/*.diff | patch -p0
</pre>
          </li>
          <li>
            Configure in your build folder (preferably out of the source code). For example:
            <pre>cd ../../obj
../src/configure --prefix=Where\to\be\installed\
</pre>
          </li>
          <li>
            Now compile and install:
            <pre>make && make install</pre>
          </li>
        </ol>

        <p>The executables could be found in your installation folder.
        </p>

        <h3>Using Visual Studio</h3>
        <ul><b><i>Prerequisites</i></b>
          <li><b>Subversion client</b> - http://subversion.tigris.org/getting.html</li>
          <li><b>cmake</b> - http://www.cmake.org/cmake/resources/software.html</li>
          <li><b>Python</b> - http://www.python.org/download/</li>
          <li><b>GnuWin32 Tools</b> - http://getgnuwin32.sourceforge.net/</li>
          <li><b>Visual Studio</b> - <a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express" target="_blank">VS Express should work as well</a></li>
        </ul>
        <ol>
          <li>
            Checkout LLVM
            <pre>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm/src/</pre>
          </li>
          <li>
            Checkout Clang
            <pre>cd llvm\src\tools\
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang</pre>
          </li>
          <li>
            Checkout Cling (next to Clang)
            <pre>
svn co http://root.cern.ch/svn/root/branches/dev/cling cling</pre>
          </li>
          <li>
            Allow Cling to hook into LLVM's build system: apply the two patches located in the cling\patches folder.
          </li>
          <li>
            Open up cmake and enter the path to the 'src' folder in the 'Where is the source code' field and the path to the 'build' folder in the 'Where to build the binaries' field (mkdir llvm\obj - next to src).
          </li>
          <li>
            Click the Configure button and in the newly popped up window choose Visual Studio version that you have, then click Finish.
          </li>
          <li>
            After the configuring completes many red entries should appear in the Cmake window. You may want to change CMAKE_INSTALL_PREFIX to 'inst' (next to next to src and obj, otherwise the default is Program Files). Click Generate. <br /><i>Note:</i> You may have to do it twice (on 2.8.5) in case after clicking Generate the box is still red.
          </li>
          <li>
            Navigate to your 'build' folder and open LLVM.sln using Visual Studio and build it.
          </li>
          <li>
            Navigate to CMakePredefined project in Visual Studio and right click INSTALL. Choose Project Only -> Build only INSTALL.
          </li>
        </ol>
        <p>The executables could be found in your CMAKE_INSTALL_PREFIX/bin/
        </p>
        <p>More information about cmake in LLVM and Clang could be found <a href="http://www.llvm.org/docs/CMake.html" target="_blank">here</a> and <a href="http://clang.llvm.org/get_started.html" target="_blank">here</a>.
        </p>
      </div>
    </div>
    <div id="footer">
      <div id="copyright">
        Copyright &copy; Cling Team
      </div>
      <div id="links">
        <a href="http://root.cern.ch/" target="_blank">The ROOT Framework</a> |
        <a href="http://llvm.org" target="_blank">LLVM</a> |
        <a href="http://clang.llvm.org" target="_blank">Clang</a> |
        <a href="http://www.html5webtemplates.co.uk" target="_blank">Web Design</a>
      </div>
      <div id="modified"><i>Page was modified on <b>$Date$</b> in $Rev$ by <b>$Author$</b></i></div>
    </div>
  </div>
</body>
</html>
